{# THE chat surface: thread, jump button, staged images, composer. The AI page's Chat section includes it and the drawer fetches it; there is one instance on a page at a time (the drawer empties while the Chat section shows), so the ids the scripts and the composer target stay unique. Needs: assistant, chat_path, stream_url, turn_defaults, messages, conversation_id, picker (the catalog is there to pick from), voice (how a spoken turn is heard, or none). #} {% from "components/macros/icons.html" import icon, sprite %} {% from "components/macros/chat.html" import button_classes, conversation_field, voice_states %} {{ sprite() }}